package com.fadada.api;

import com.fasc.open.api.bean.base.BaseRes;
import com.fasc.open.api.bean.req.corpmanage.OpenCorpAuthUrlReq;
import com.fasc.open.api.client.EUIClient;
import com.fasc.open.api.enums.common.EuiEnvironmentEnum;
import com.fasc.open.api.utils.ResultUtil;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

public class EUIDemo extends BaseDemo {
    private static EUIClient euiClient;

    public static void main(String[] args) throws Exception {
        BaseDemo baseDemo = new BaseDemo();
        openApiClient = baseDemo.getClient();
        euiClient = new EUIClient(openApiClient);
        //构造企业用户授权链接
        getOpenCorpAuthorizeUrl();
    }

    /**
     * **链接说明**：应用系统需要构造如下页面链接(PC、H5自适应)，用于企业授权操作，以授权应用系统访问该企业在法大大平台的某些数据和操作权限。
     *
     * **适用场景**：添加企业用户后，在该企业使用法大大电子签服务前，应用系统可根据自身业务流程设计，先提醒企业进行授权。应用系统必须得到企业授权后方可访问该企业的数据信息(如企业身份信息)和有权进行某些操作(如发起签署任务)。若企业只需被动参与签署任务的填写或签署，则无需使用本授权流程。
     *
     * **链接示例**：https://{appId}.e.fadada.com/authorize/list?authScopes={authScopes}&corpName={corpName}&openCorpId={openCorpId}&redirectUrl={URLEncode(Url)}&signature={signature}&timestamp={timestamp}
     * @throws Exception
     */
    public static void getOpenCorpAuthorizeUrl() throws Exception {
        OpenCorpAuthUrlReq req = new OpenCorpAuthUrlReq();
        req.setCorpName("深圳没想到网络科技");
        String redirectUrl= URLEncoder.encode("https://developer.fadada.com/portal/doc/OACPEHASMG", "UTF-8");
        req.setRedirectUrl(redirectUrl);
        req.setOpenCorpId("openCorpId");
        List<String> authScopes = new ArrayList<>();
        authScopes.add("ident_info");
        authScopes.add("signtask_init");
        authScopes.add("resource_for_sign");
        req.setAuthScopes(String.join(",", authScopes));
        BaseRes<String> BaseRes = euiClient.getOpenCorpAuthorizeUrl(req, EuiEnvironmentEnum.UAT);
        ResultUtil.printLog(BaseRes, openApiClient.getJsonStrategy());
    }

}
